package com.pet.platform.service;

import com.pet.platform.common.PageResult;
import com.pet.platform.dto.OrderDTO;
import com.pet.platform.entity.Order;
import java.math.BigDecimal;
import java.util.List;

public interface OrderService {
    /**
     * 创建订单
     */
    Order createOrder(OrderDTO orderDTO);
    
    /**
     * 从购物车创建订单
     */
    OrderDTO createOrderFromCart(Long userId, String shippingAddress, String shippingPhone, String shippingName);
    
    /**
     * 获取订单详情
     */
    OrderDTO getOrderById(Long id);
    
    /**
     * 获取用户订单列表
     */
    PageResult<Order> getUserOrders(Long userId, Integer pageNum, Integer pageSize);
    
    /**
     * 获取用户特定状态的订单列表
     */
    PageResult<Order> getOrdersByUserIdAndStatus(Long userId, Integer status, Integer pageNum, Integer pageSize);
    
    /**
     * 搜索订单
     */
    PageResult<OrderDTO> searchOrders(String keyword, Integer pageNum, Integer pageSize);
    
    /**
     * 高级搜索订单
     */
    PageResult<OrderDTO> advancedSearchOrders(String keyword, String orderNo, String username, 
                                            String status, String startDate, String endDate, 
                                            Integer pageNum, Integer pageSize);
    
    /**
     * 更新订单状态
     */
    OrderDTO updateOrderStatus(Long id, String status);
    
    /**
     * 取消订单
     */
    void cancelOrder(Long id);
    
    /**
     * 支付订单
     */
    void payOrder(Long id, String paymentMethod);
    
    /**
     * 确认收货
     */
    void confirmReceive(Long id);
    
    /**
     * 删除订单
     */
    void deleteOrder(Long id);

    /**
     * 获取订单总数
     */
    Long count();

    /**
     * 获取总销售额
     */
    BigDecimal getTotalSales();

    /**
     * 获取最新订单列表
     */
    List<OrderDTO> getLatestOrders(int limit);
} 